golang null
结构体 转换成字符串时nil转为null
1,某结构体的普通字段,可以在json标签里面加omitempty,这样某个字段如果没有值,就不返回
2,某结构体数组中的的子结构体字段,var tags_list []*models.BugTags 改为 tags_list := make([]*models.BugTags, 0)
3,在Go中,如果你尝试访问一个map中不存在的key,它将会返回map类型的值对应的零值。对于大多数map的value类型,零值为nil。比如interface{}
初始化:
如果初始化结构体,默认所有字段取0值;初始化结构体指针,默认nil
这两个初始化的方式有一定的区别。
params := &models.Cve5CollectionLogParam{}:这种初始化方式使用了短变量声明,通过&符号创建了一个指向models.Cve5CollectionLogParam类型零值的指针。这样做后,params就是一个指针类型的变量,可以直接对其字段进行操作。
var params *models.Cve5CollectionLogParam:这种初始化方式声明了一个指针类型的变量params,但是没有对其进行初始化。此时,params的值为nil,即指针不指向任何有效的内存地址。
如果在第二种初始化方式之后直接对params的字段进行赋值操作,会导致空指针错误。因为params是一个空指针,没有指向任何实际的对象或数据。解决这个问题的方法是先为params分配一块内存,并将其指向该内存地址,然后再对其字段进行赋值,如下所示:
go
params := &models.Cve5CollectionLogParam{}
params.Limit = pageNum
params.Offset = (page - 1) * pageNum
或者使用new函数为params分配内存并返回一个指向该内存地址的指针,然后对其字段进行赋值:
go
params := new(models.Cve5CollectionLogParam)
params.Limit = pageNum
params.Offset = (page - 1) * pageNum
通过以上方式,可以避免空指针错误,并正常对params的字段进行赋值操作。
「三年博客,如果觉得我的文章对您有用,请帮助本站成长」
共有 0 - golang 变量声明以及null